﻿using System.Collections.Generic;
using MinecraftEnchantCalculator.Data.Entity;

namespace MinecraftEnchantCalculator.Abstractions;

/// <summary>
///   可附魔物品接口，定义了可进行附魔操作的物品的基本属性和行为规范
/// </summary>
public interface IEnchantable
{
  /// <summary>
  ///   铁砧使用次数，用于计算附魔合并时的累计消耗
  /// </summary>
  public int AnvilUseCount { get; }

  /// <summary>
  ///   当前物品的附魔成本（可能基于铁砧使用次数、附魔属性等计算得出）
  /// </summary>
  public int Cost { get; }

  /// <summary>
  ///   物品上已有的附魔列表
  /// </summary>
  public List<Enchantment> Enchantments { get; }

  /// <summary>
  ///   物品的附魔价值（可能基于附魔等级、类型等计算得出）
  /// </summary>
  public int Value { get; }

  /// <summary>
  ///   将当前物品与另一个可附魔物品合并，返回合并后的新物品
  /// </summary>
  /// <param name="other">待合并的另一个可附魔物品</param>
  /// <returns>合并后的可附魔物品</returns>
  IEnchantable Merge(IEnchantable other);
}